//package com.gateway.repository.util;
//
//import com.baomidou.mybatisplus.core.toolkit.StringPool;
//import com.baomidou.mybatisplus.generator.AutoGenerator;
//import com.baomidou.mybatisplus.generator.FastAutoGenerator;
//import com.baomidou.mybatisplus.generator.config.*;
//import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
//import com.baomidou.mybatisplus.generator.config.rules.DateType;
//import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
//import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
//import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
//
//import java.io.File;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * mp生成器
// * 仅需要改 todo 的地方
// * 生成的代码在src目录下,需要手动挪到对应目录
// * 使用教程 https://mp.baomidou.com/guide/wrapper.html
// */
//public class CodeGeneratorUtil {
//
//    public static void main(String[] args) {
//
//        //todo 需要生成的表
//        String[] tables = new String[]{"gateway_plugin_selector", "gateway_plugin_rule", "gateway_plugin", "selector_condition", "rule_condition"};
//
//
//        // 使用 FastAutoGenerator 快速配置代码生成器
//        FastAutoGenerator.create("jdbc:mysql://172.30.47.249:3306/edas?nullCatalogMeansCurrent=true&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false", "wanyun_ppc_test", "hLGQK4H3nz9h0f2qkfuf7lm0nYzv1ll9")
//                .globalConfig(builder -> {
//                    builder.author("Your Name") // 设置作者
//                            .outputDir("src/main/java"); // 输出目录
//                })
//                .packageConfig(builder -> {
//                    builder.parent("com.example") // 设置父包名
//                            .entity("model") // 设置实体类包名
//                            .mapper("dao") // 设置 Mapper 接口包名
//                            .service("service") // 设置 Service 接口包名
//                            .serviceImpl("service.impl") // 设置 Service 实现类包名
//                            .xml("mappers"); // 设置 Mapper XML 文件包名
//                })
//                .strategyConfig(builder -> {
//                    builder.addInclude("table1", "table2") // 设置需要生成的表名
//                            .entityBuilder()
//                            .enableLombok() // 启用 Lombok
//                            .enableTableFieldAnnotation() // 启用字段注解
//                            .controllerBuilder()
//                            .enableRestStyle(); // 启用 REST 风格
//                })
//                .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
//                .execute(); // 执行生成
//
//        //代码生成器
//        AutoGenerator mpg = new AutoGenerator();
//
//        //全局配置
//        GlobalConfig gc = new GlobalConfig();
//        String projectPath = System.getProperty("user.dir");
//        String srcPath = projectPath + "/gateway-repository/src/main/java";
//        gc.setOutputDir(srcPath);
//        gc.setAuthor("auto_generation");
//        gc.setFileOverride(true);
//        gc.setOpen(false);
//        gc.setBaseResultMap(true);
//        gc.setDateType(DateType.ONLY_DATE);
//        gc.setServiceName("%sService");
//        mpg.setGlobalConfig(gc);
//
//        // 设置 tinyint为 Integer
//        dsc.setTypeConvert(new MySqlTypeConvert() {
//            @Override
//            public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
//                String t = fieldType.toLowerCase();
//                if (t.contains("tinyint")) {
//                    return DbColumnType.INTEGER;
//                }
//                return super.processTypeConvert(globalConfig, fieldType);
//            }
//        });
//        mpg.setDataSource(dsc);
//
//
//        //包配置
//        PackageConfig pc = new PackageConfig();
//        // 需要去除parent, 否则包名前还会添加默认包路径 com.baomidou
//        pc.setParent("");
//        pc.setEntity("com.gateway.repository.bean")
//                .setMapper("com.gateway.repository.mapper")
//                .setService("com.gateway.repository.service")
//                .setServiceImpl("com.gateway.repository.service.impl")
//        ;
//        Map<String, String> packageInfo = new HashMap<>();
//        packageInfo.put(ConstVal.ENTITY, "com.gateway.repository.bean");
//        packageInfo.put(ConstVal.MAPPER, "com.gateway.repository.mapper");
//        packageInfo.put(ConstVal.SERVICE, "com.gateway.repository.service");
//        packageInfo.put(ConstVal.SERVICE_IMPL, "com.gateway.repository.service.impl")
//        ;
//
//        /*
//         * pathInfo配置controller、service、serviceImpl、entity、mapper、mapper.xml等文件的生成路径
//         * srcPath也可以更具实际情况灵活配置
//         * 后面部分的路径是和上面packageInfo包路径对应的源码文件夹路径
//         * 这里你可以选择注释其中某些路径，可忽略生成该类型的文件，例如:注释掉下面pathInfo中Controller的路径，就不会生成Controller文件
//         */
//        Map<String, String> pathInfo = new HashMap<>(8);
//        pathInfo.put(ConstVal.ENTITY_PATH, srcPath + "/" + packageInfo.get(ConstVal.ENTITY).replaceAll("\\.", StringPool.BACK_SLASH + File.separator));
//        pathInfo.put(ConstVal.MAPPER_PATH, srcPath + "/" + packageInfo.get(ConstVal.MAPPER).replaceAll("\\.", StringPool.BACK_SLASH + File.separator));
//        pathInfo.put(ConstVal.SERVICE_PATH, srcPath + "/" + packageInfo.get(ConstVal.SERVICE).replaceAll("\\.", StringPool.BACK_SLASH + File.separator));
//        pathInfo.put(ConstVal.SERVICE_IMPL_PATH, srcPath + "/" + packageInfo.get(ConstVal.SERVICE_IMPL).replaceAll("\\.", StringPool.BACK_SLASH + File.separator))
//        ;
//        pc.setPathInfo(pathInfo);
//        mpg.setPackageInfo(pc);
//
//
//        // 配置模板
//        TemplateConfig templateConfig = new TemplateConfig();
//        //set("")表示不生成相应模块代码
//        templateConfig.setController(null);
//        // 配置自定义输出模板
//        templateConfig.setXml(null);
//        mpg.setTemplate(templateConfig);
//
//
//        //配置策略
//        StrategyConfig strategy = new StrategyConfig();
//        strategy.setNaming(NamingStrategy.underline_to_camel);
//        strategy.setColumnNaming(NamingStrategy.underline_to_camel);
//        // @version注解的字段名
//        strategy.setVersionFieldName("version");
//        //默认是false
//        strategy.setEntityLombokModel(true);
//
//        // 去除is前缀
//        strategy.setEntityBooleanColumnRemoveIsPrefix(true);
//
//
//        strategy.setInclude(tables);
//
//        strategy.setControllerMappingHyphenStyle(true);
//        strategy.setTablePrefix("");
//        mpg.setStrategy(strategy);
//        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
//        mpg.execute();
//
//    }
//
//}
//
//
